#ifndef __selfenergy__
#define __selfenergy__

#include <iostream>
#include <qk.h>
#include <io.h>

namespace se{

	void impurity_self_energy(
		const parameters        &params,
		const h5files_container &h5files,
		const int                itau,
		const int                it,
		const arma::vec         &weights,
		complex_matrix          &Vimp,
		complex_matrix_function &G_current,
		complex_matrix_function &impurity_self_energy);
	

	void phonon_self_energy(
		const parameters        &params,
		const h5files_container &h5files,
		const int                itau,
		const int                it,
		const arma::vec         &weights,
		const arma::vec         &tau,
		const arma::vec         &kmag,
		complex_matrix_function &G_current,
		complex_matrix_function &phonon_self_energy);

	void gw_self_energy(
		const parameters        &params,
		const h5files_container &h5files,
		const int                itau,
		const int                it,
		complex_matrix_function &G_current);
		
	void screened_interaction_rpa(
		const parameters&        params,
		const h5files_container& h5files);
	

}


#endif